home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Windows marzen / Maxthon 2.0.4 / mx_2.0.4.5799.exe / template / _shared / js / maxConfig.js < prev    next >
Text File  |  2007-09-20  |  14KB  |  586 lines

  1. var maxConfig={};
  2. maxConfig.defaultFile="$main";
  3. maxConfig.files={};
  4. maxConfig.silentChange=false;
  5. maxConfig.setActiveFile=function(_1,_2){
  6. if(!_1){
  7. _1=maxConfig.defaultFile;
  8. }
  9. if(_2==undefined){
  10. _2=false;
  11. }
  12. if(!maxConfig.files[_1]){
  13. maxConfig.files[_1]={api:null,modified:false,saveOnChange:_2};
  14. maxConfig.files[_1].api=external.max_getObject(max_security_id,"INIManager");
  15. maxConfig.files[_1].api.fileName=_1;
  16. if(!maxConfig.files[_1].api.load()){
  17. alert("LOAD FILE FAILED : "+_1);
  18. return;
  19. }
  20. }
  21. maxConfig.activeFile=maxConfig.files[_1];
  22. };
  23. maxConfig.load=function(){
  24. maxConfig.activeFile.api.load();
  25. maxConfig.activeFile.modified=false;
  26. };
  27. maxConfig.save=function(){
  28. maxConfig.activeFile.api.save();
  29. maxConfig.activeFile.modified=false;
  30. };
  31. maxConfig.ui={};
  32. maxConfig.ui.buildItems=function(_3){
  33. var _4="";
  34. for(var i=0;i<_3.length;i++){
  35. var _6=_3[i];
  36. var _7="";
  37. if(!_6.type){
  38. alert("maxConfig.ui.buildItems :: missing item type\n"+$toJSON(_6));
  39. continue;
  40. }
  41. if((_6.id&&!_6.key)||(!_6.id&&_6.key)){
  42. alert("maxConfig.ui.buildItems :: missing item id/key for \""+_6.id+"\"");
  43. continue;
  44. }
  45. switch(_6.type){
  46. case "header":
  47. _7="<h5>"+_6.html+"</h5>\n";
  48. _6.noWrapper=true;
  49. break;
  50. case "html":
  51. _7=_6.html;
  52. _6.noWrapper=true;
  53. break;
  54. case "text":
  55. _7=_6.text.$encodeHTML();
  56. break;
  57. case "hr":
  58. _7="<hr />\n";
  59. _6.noWrapper=true;
  60. break;
  61. case "checkbox":
  62. _7=maxConfig.ui.checkbox.build(_6);
  63. break;
  64. case "textbox":
  65. _7=maxConfig.ui.textbox.build(_6);
  66. break;
  67. case "textarea":
  68. _7=maxConfig.ui.textbox.buildArea(_6);
  69. break;
  70. case "color":
  71. _7=maxConfig.ui.color.build(_6);
  72. break;
  73. case "key":
  74. _7=maxConfig.ui.key.build(_6);
  75. break;
  76. case "radio":
  77. _7=maxConfig.ui.radio.build(_6);
  78. break;
  79. case "folder":
  80. _7=maxConfig.ui.folder.build(_6);
  81. break;
  82. default:
  83. alert("maxConfig.ui.buildPage :: unknown type of item\n"+$toJSON(_6));
  84. }
  85. if(_6.noWrapper){
  86. _4+=_7;
  87. }else{
  88. if(_6.type=="text"){
  89. _4+="<p>"+_7+"</p>";
  90. }else{
  91. _4+="<div class=\""+(_6.disabled?"item-disabled":"item")+"\" id=\"item_"+_6.id+"\">"+_7+"</div>";
  92. }
  93. }
  94. }
  95. return _4;
  96. };
  97. maxConfig.ui.disableItem=function(_8){
  98. var _9=$id(_8);
  99. if(_9){
  100. _9.disabled=true;
  101. }
  102. var _a=$name(_8);
  103. if(_a){
  104. for(var i=0;i<_a.length;i++){
  105. _a[i].disabled=true;
  106. }
  107. }
  108. var _9=$id("item_"+_8);
  109. if(!_9){
  110. return;
  111. }
  112. _9.className="item-disabled";
  113. };
  114. maxConfig.ui.enableItem=function(_c){
  115. var _d=$id(_c);
  116. if(_d){
  117. _d.disabled=false;
  118. }
  119. var _e=$name(_c);
  120. if(_e){
  121. for(var i=0;i<_e.length;i++){
  122. _e[i].disabled=false;
  123. }
  124. }
  125. var _d=$id("item_"+_c);
  126. if(!_d){
  127. return;
  128. }
  129. _d.className="item";
  130. };
  131. maxConfig.ui.getItemValue=function(_10){
  132. if(_10.html==undefined){
  133. _10.html=$lang(_10.id);
  134. }
  135. if(_10.pre==undefined){
  136. _10.pre="";
  137. }
  138. if(_10.suf==undefined){
  139. _10.suf="";
  140. }
  141. if(_10.onAfterClick==undefined){
  142. _10.onAfterClick="";
  143. }
  144. var _11=maxConfig.ini.getValue(_10.section,_10.key);
  145. if(_11==null){
  146. if(_10.defaultValue){
  147. return _10.defaultValue;
  148. }else{
  149. return "";
  150. }
  151. }else{
  152. return _11;
  153. }
  154. };
  155. maxConfig.ui.checkbox={};
  156. maxConfig.ui.checkbox.build=function(_12){
  157. var _13="";
  158. if(maxConfig.ui.getItemValue(_12)=="1"){
  159. _13+=" checked=\"checked\"";
  160. }
  161. if(_12.disabled){
  162. _13+=" disabled=\"disabled\"";
  163. }
  164. _13+=" onclick=\"maxConfig.ui.checkbox.set('"+_12.id+"', '"+_12.key+"', '"+_12.section+"', '"+_12.file+"');"+_12.onAfterClick+"\"";
  165. _13="<input type=\"checkbox\" id=\""+_12.id+"\""+_13+" />"+"<label for=\""+_12.id+"\"> "+_12.html+"</label>";
  166. _13=_12.pre+_13+_12.suf;
  167. return _13;
  168. };
  169. maxConfig.ui.checkbox.set=function(_14,key,_16,_17){
  170. var obj=$id(_14);
  171. if(obj){
  172. if(obj.checked){
  173. maxConfig.ini.setValue(_16,key,"1");
  174. }else{
  175. maxConfig.ini.setValue(_16,key,"0");
  176. }
  177. }else{
  178. alert("maxConfig.ui.checkbox.set :: invalid id "+_14);
  179. }
  180. };
  181. maxConfig.ui.textbox={};
  182. maxConfig.ui.textbox.build=function(_19,_1a){
  183. var _1b="";
  184. _1b+=" value=\""+maxConfig.ui.getItemValue(_19).$encodeHTML()+"\"";
  185. if(_19.disabled){
  186. _1b+=" disabled=\"disabled\"";
  187. }
  188. _1b+=" onchange=\"maxConfig.ui.textbox.set('"+_19.id+"', '"+_19.key+"', '"+_19.section+"', '"+_19.file+"');\"";
  189. if(_19.tagx){
  190. _1b+=" "+_19.tagx;
  191. }
  192. _1b=" <input type=\"text\" class=\"text\" id=\""+_19.id+"\""+_1b+" /> ";
  193. _1b=_19.pre+_1b+_19.suf;
  194. return _1b;
  195. };
  196. maxConfig.ui.textbox.buildArea=function(_1c){
  197. var _1d="";
  198. var _1e=maxConfig.ui.getItemValue(_1c).$encodeHTML(true);
  199. if(_1c.disabled){
  200. _1d+=" disabled=\"disabled\"";
  201. }
  202. _1d+=" onchange=\"maxConfig.ui.textbox.set('"+_1c.id+"', '"+_1c.key+"', '"+_1c.section+"', '"+_1c.file+"');\"";
  203. if(_1c.tagx){
  204. _1d+=" "+_1c.tagx;
  205. }
  206. _1d=" <textarea id=\""+_1c.id+"\""+_1d+">"+_1e+"</textarea>";
  207. _1d=_1c.pre+_1d+_1c.suf;
  208. return _1d;
  209. };
  210. maxConfig.ui.textbox.set=function(_1f,key,_21,_22){
  211. var obj=$id(_1f);
  212. if(obj){
  213. maxConfig.ini.setValue(_21,key,obj.value);
  214. }else{
  215. alert("maxConfig.ui.textbox.set :: invalid id "+_1f);
  216. }
  217. };
  218. maxConfig.ui.color={};
  219. maxConfig.ui.color.build=function(_24){
  220. var _25=maxConfig.ui.getItemValue(_24);
  221. var _26=maxConfig.ui.color.calculateInvertColor(_25);
  222. var _27="";
  223. _27+=" <span id=\""+_24.id+"\" class=\"color-spot\" style=\"color: "+_26+";background: "+_25.$encodeHTML()+";\""+" onclick=\"this.blur();maxConfig.ui.color.set('"+_24.id+"', '"+_24.key+"', '"+_24.section+"', '"+_24.file+"');"+_24.onAfterClick+"\">"+_25.$encodeHTML()+"</span> ";
  224. _27=_24.pre+_27+_24.suf;
  225. return _27;
  226. };
  227. maxConfig.ui.color.set=function(_28,key,_2a,_2b){
  228. var obj=$id(_28);
  229. if(!obj){
  230. return;
  231. }
  232. var _2d=obj.innerHTML;
  233. var _2e=external.max_getObj(max_security_id,"utilities");
  234. var _2f=_2e.getColor(_2d);
  235. if(_2f!=undefined){
  236. maxConfig.ini.setValue(_2a,key,_2f);
  237. maxConfig.ui.color.updateUI(_28,_2f);
  238. }
  239. };
  240. maxConfig.ui.color.calculateInvertColor=function(_30){
  241. var _31=_30.replace(/[^0-9a-f]/ig,"");
  242. if(_31.length!=6){
  243. return "#FFFFFF";
  244. }
  245. var _32="";
  246. for(var i=0;i<3;i++){
  247. var _34=_31.substr(i*2,2);
  248. var _35=parseInt(_34,16);
  249. _35=255-_35;
  250. _34=_35.toString(16);
  251. if(_34.length!=2){
  252. _34="0"+_34;
  253. }
  254. _32+=_34.toUpperCase();
  255. }
  256. return _32;
  257. };
  258. maxConfig.ui.color.updateUI=function(_36,_37){
  259. var obj=$id(_36);
  260. if(obj){
  261. obj.style.color=maxConfig.ui.color.calculateInvertColor(_37);
  262. obj.style.background=_37;
  263. obj.innerHTML=_37.$encodeHTML();
  264. }
  265. };
  266. maxConfig.ui.radio={};
  267. maxConfig.ui.radio.build=function(_39){
  268. var _3a=maxConfig.ui.getItemValue(_39);
  269. if(_39.inline){
  270. _39.inlineSpacer=_39.inlineSpacer?_39.inlineSpacer:"   ";
  271. }
  272. var _3b="";
  273. if(!_39.noHeader){
  274. _3b+="<h5>"+_39.html+"</h5>\n";
  275. }
  276. for(var i=0;i<_39.choices.length;i++){
  277. var _3d=_39.choices[i];
  278. _3b+=(_39.inline?"<span class=\"radio-item-inline\">":"<div class=\"radio-item\">")+(_3d.pre?_3d.pre:"")+"<input type=\"radio\" name=\""+_39.id+"\" id=\""+_39.id+"_"+i+"\" value=\""+_3d.value+"\""+" onclick=\"maxConfig.ui.radio.set('"+_39.id+"', '"+_39.key+"', '"+_39.section+"', '"+_39.file+"');"+_39.onAfterClick+"\""+" "+((_3a==_3d.value)?"checked=\"checked\"":"")+" "+(_39.disabled?"disabled=\"disabled\"":"")+"/>"+"<label for=\""+_39.id+"_"+i+"\"> "+_3d.html+"</label>"+(_3d.suf?_3d.suf:"")+(_39.inline?"</span>"+_39.inlineSpacer:"</div>");
  279. }
  280. _3b=_39.pre+_3b+_39.suf;
  281. return _3b;
  282. };
  283. maxConfig.ui.radio.set=function(_3e,key,_40,_41){
  284. var _42=$name(_3e);
  285. if(_42){
  286. var _43=_42[0].value;
  287. for(var i=0;i<_42.length;i++){
  288. if(_42[i].checked){
  289. _43=_42[i].value;
  290. break;
  291. }
  292. }
  293. maxConfig.ini.setValue(_40,key,_43);
  294. }else{
  295. alert("maxConfig.ui.radio.set :: invalid id "+_3e);
  296. }
  297. };
  298. maxConfig.ui.key={};
  299. maxConfig.ui.key.build=function(_45){
  300. var _46=maxConfig.ui.key.parseData(maxConfig.ui.getItemValue(_45));
  301. var _47="";
  302. _47+=" <span id=\""+_45.id+"\" class=\"label-item\">"+_46[1].$encodeHTML()+"</span> ";
  303. _47+="   <a href=\"javascript:;\" onclick=\"this.blur();maxConfig.ui.key.set('"+_45.id+"', '"+_45.key+"', '"+_45.section+"', '"+_45.file+"');"+_45.onAfterClick+"\">"+$lang("set_key")+"</a> ";
  304. _47=_45.pre+_47+_45.suf;
  305. return _47;
  306. };
  307. maxConfig.ui.key.set=function(_48,key,_4a,_4b){
  308. var _4c=external.max_invoke("GetHotKey");
  309. if(_4c!=-1){
  310. maxConfig.ini.setValue(_4a,key,_4c);
  311. maxConfig.ui.key.updateUI(_48,_4c);
  312. }
  313. };
  314. maxConfig.ui.key.parseData=function(_4d){
  315. if(_4d==undefined){
  316. _4d="";
  317. }
  318. var arr=_4d.split("$:$");
  319. if(arr.length==2){
  320. if(arr[1]!=""){
  321. return arr;
  322. }
  323. }
  324. arr[0]="csa_0";
  325. arr[1]="none";
  326. return arr;
  327. };
  328. maxConfig.ui.key.updateUI=function(_4f,_50){
  329. var obj=$id(_4f);
  330. if(obj){
  331. var _52=maxConfig.ui.key.parseData(_50);
  332. if(_52[1]=="none"){
  333. try{
  334. _52[1]=$lang("none");
  335. }
  336. catch(e){
  337. }
  338. }
  339. obj.innerHTML=_52[1].$encodeHTML();
  340. }else{
  341. alert("maxConfig.ui.key.updateUI :: invalid id "+_4f);
  342. }
  343. };
  344. maxConfig.ui.folder={};
  345. maxConfig.ui.folder.build=function(_53){
  346. var _54=maxConfig.ui.getItemValue(_53);
  347. if(_54==""){
  348. _54="...";
  349. }
  350. _54=maxConfig.ui.folder.cutString(_54);
  351. _53.subType=_53.subType?_53.subType:"folder";
  352. var _55="";
  353. _55+="<span id=\""+_53.id+"\" class=\"label-item\">"+_54+"</span>";
  354. _55+="   <a href=\"javascript:;\" onclick=\"this.blur();maxConfig.ui.folder.set('"+_53.id+"', '"+_53.key+"', '"+_53.section+"', '"+_53.file+"', '"+_53.subType+"');"+_53.onAfterClick+"\">"+$lang("browse")+"</a> ";
  355. _55=_53.pre+_55+_53.suf;
  356. return _55;
  357. };
  358. maxConfig.ui.folder.set=function(_56,key,_58,_59,_5a){
  359. var _5b=(_5a=="fav")?external.max_invoke("SelFavFolder"):external.max_invoke("SelFolder");
  360. if(_5b!=0){
  361. maxConfig.ini.setValue(_58,key,_5b);
  362. maxConfig.ui.folder.updateUI(_56,_5b);
  363. }
  364. };
  365. maxConfig.ui.folder.cutString=function(_5c){
  366. if(_5c.length>50){
  367. var _5d="";
  368. var pos=_5c.lastIndexOf("/");
  369. if(pos>25){
  370. _5d=_5c.substring(pos,_5c.length);
  371. }else{
  372. _5d=_5c.substring(_5c.length-25,_5c.length);
  373. }
  374. return _5c.substr(0,25)+"..."+_5d;
  375. }
  376. return _5c;
  377. };
  378. maxConfig.ui.folder.updateUI=function(_5f,_60){
  379. var obj=$id(_5f);
  380. if(obj){
  381. if(_60==""){
  382. _60=="...";
  383. }
  384. _60=maxConfig.ui.folder.cutString(_60);
  385. obj.innerHTML=_60.$encodeHTML();
  386. }else{
  387. alert("maxConfig.ui.folder.updateUI :: invalid id "+_5f);
  388. }
  389. };
  390. maxConfig.ini={};
  391. maxConfig.ini.encodeChars=function(str,_63){
  392. if(typeof (str)!="string"){
  393. return str;
  394. }
  395. str=str.replace(/\t/g,"\\t");
  396. str=str.replace(/\n/g,"\\n");
  397. str=str.replace(/\r/g,"\\r");
  398. if(_63!=undefined){
  399. str=str.replace(/\=/g,"=");
  400. str=str.replace(/\[/g,"{{");
  401. }
  402. return str;
  403. };
  404. maxConfig.ini.decodeChars=function(str,_65){
  405. if(typeof (str)!="string"){
  406. return str;
  407. }
  408. str=str.replace(/\\t/g,"\t");
  409. str=str.replace(/\\n/g,"\n");
  410. str=str.replace(/\\r/g,"\r");
  411. if(_65!=undefined){
  412. str=str.replace(/\&\#61;/g,"=");
  413. str=str.replace(/\{\{/g,"[");
  414. }
  415. return str;
  416. };
  417. maxConfig.ini.getValue=function(_66,key){
  418. var _68=maxConfig.activeFile.api.readValue(_66,key,"__na__");
  419. if(_68=="__na__"){
  420. _68=null;
  421. }
  422. return _68;
  423. };
  424. maxConfig.ini.setValue=function(_69,key,_6b){
  425. maxConfig.activeFile.api.writeValue(_69,key,_6b);
  426. if(!maxConfig.activeFile.silentChange){
  427. maxConfig.activeFile.modified=true;
  428. }
  429. if(maxConfig.activeFile.saveOnChange){
  430. maxConfig.save();
  431. }
  432. };
  433. maxConfig.ini.deleteKey=function(_6c,key){
  434. maxConfig.activeFile.api.deleteKey(_6c,key);
  435. if(!maxConfig.activeFile.silentChange){
  436. maxConfig.activeFile.modified=true;
  437. }
  438. if(maxConfig.activeFile.saveOnChange){
  439. maxConfig.save();
  440. }
  441. };
  442. maxConfig.ini.deleteSection=function(_6e){
  443. maxConfig.activeFile.api.deleteSection(_6e);
  444. if(!maxConfig.activeFile.silentChange){
  445. maxConfig.activeFile.modified=true;
  446. }
  447. if(maxConfig.activeFile.saveOnChange){
  448. maxConfig.save();
  449. }
  450. };
  451. maxConfig.ini.getArray=function(_6f,_70){
  452. if(_70==undefined){
  453. _70=false;
  454. }
  455. var _71=[];
  456. maxConfig.activeFile.api.readSection(_6f,_71);
  457. if(_70){
  458. _71.sort();
  459. }
  460. var _72=[];
  461. for(var i=0;i<_71.length;i++){
  462. if(_71[i]!=""){
  463. _71[i]=_71[i].split("$,$");
  464. if(_70){
  465. if(_71[i][0].indexOf("_s")>-1){
  466. _71[i]=_71[i][1];
  467. }else{
  468. _71[i].shift();
  469. }
  470. }else{
  471. _71[i][0]=_71[i][0];
  472. }
  473. _72.push(_71[i]);
  474. }
  475. }
  476. return _72;
  477. };
  478. maxConfig.ini.setArray=function(_74,_75,_76){
  479. if(_76==undefined){
  480. _76=false;
  481. }
  482. if(_76){
  483. var _77=_75.length.toString().length;
  484. for(var i=0;i<_75.length;i++){
  485. var key=i.toString();
  486. while(key.length<_77){
  487. key="0"+key;
  488. }
  489. if(typeof (_75[i])=="string"){
  490. maxConfig.activeFile.api.writeValue(_74,key+"_s",_75[i]);
  491. }else{
  492. maxConfig.activeFile.api.writeValue(_74,key,_75[i].join("$,$"));
  493. }
  494. }
  495. }else{
  496. for(var i=0;i<_75.length;i++){
  497. var _7a=$clone(_75[i]);
  498. var key=_7a.shift();
  499. maxConfig.activeFile.api.writeValue(_74,key,_7a.join("$,$"));
  500. }
  501. }
  502. if(!maxConfig.activeFile.silentChange){
  503. maxConfig.activeFile.modified=true;
  504. }
  505. if(maxConfig.activeFile.saveOnChange){
  506. maxConfig.save();
  507. }
  508. };
  509. maxConfig.res={};
  510. maxConfig.res.filterPath=external.max_invoke("getPath","filter");
  511. maxConfig.res.load=function(_7b){
  512. var _7c=external.max_getResList(_7b);
  513. if(_7c==""){
  514. return [];
  515. }
  516. var _7d=_7c.split("$|$");
  517. for(var i=0;i<_7d.length;i++){
  518. _7d[i]=_7d[i].split("$,$");
  519. var _7f={};
  520. for(var j=0;j<_7d[i].length;j++){
  521. var key=_7d[i][j].substr(0,_7d[i][j].indexOf("="));
  522. var _82=_7d[i][j].substr(_7d[i][j].indexOf("=")+1,_7d[i][j].length);
  523. _7f[key]=_82;
  524. }
  525. if(_7b=="filter"){
  526. _7f=maxConfig.res.loadFilterItem(_7f);
  527. }
  528. _7f=maxConfig.res.postProccessItem(_7b,_7f);
  529. if(_7f.title){
  530. _7d[i]=_7f;
  531. }else{
  532. _7d.splice(i,1);
  533. i--;
  534. }
  535. }
  536. _7d.$sort("title");
  537. return _7d;
  538. };
  539. maxConfig.res.loadFilterItem=function(_83){
  540. var _84={"namespace":"","validate":"/m2filter[@version=\"1.0\"]","items":"//package","attributes":{"title":"@title","version":"@version","author":"@author","description":"@description","support_url":"@support_url"}};
  541. var _85=maxXmlListParser.parseFile(maxConfig.res.filterPath+_83.path,_84);
  542. if(_85==null){
  543. _83.parseError=true;
  544. return _83;
  545. }else{
  546. if(_85.length<1){
  547. _83.parseError=true;
  548. return _83;
  549. }else{
  550. for(var _86 in _85[0]){
  551. _83[_86]=_85[0][_86];
  552. }
  553. }
  554. }
  555. return _83;
  556. };
  557. maxConfig.res.postProccessItem=function(_87,_88){
  558. _88.enabled=_88.enabled=="1"?true:false;
  559. if(_88.support_url){
  560. _88.supportURL=_88.support_url.$sanitizeURL();
  561. delete _88.support_url;
  562. }
  563. if(_88.description){
  564. _88.description=_88.description.$sanitizeHTML();
  565. }
  566. switch(_87){
  567. case "skin":
  568. _88.preview=_88.preview.$sanitizeURL();
  569. break;
  570. case "plugin":
  571. if(_88.can_auto){
  572. _88.canAutoStart=_88.can_auto=="1"?true:false;
  573. delete _88.can_auto;
  574. }
  575. if(_88.auto_start){
  576. _88.autoStart=_88.auto_start=="1"?true:false;
  577. delete _88.auto_start;
  578. }
  579. break;
  580. case "filter":
  581. break;
  582. }
  583. return _88;
  584. };
  585.  
  586.